绑定表达式参考

您可以在这里找到绑定表达式的参考,并将参考添加到节点、样式和状态机的绑定中。请参阅使用样式状态机

绑定 (Bindings) 属性添加到节点后,您可以创建绑定。 蓝色类型标记由绑定控制的属性。 您绑定的属性会重写在属性 (Properties) 中设置的属性。

使用绑定时请记住:

请参阅使用绑定排除绑定问题

语法   通用绑定表达式
  #(备注)
()(小括号)
=(分配)
  运算符
  +(加)
-(减)
*(乘)
/(除)
  转换
  整数 (Integer)
浮点 (Float)
布尔类型 (Boolean)
字符串 (String)
  函数
  绝对值
动画化
上限
限制 (Clamp)
创建旋转
创建绕 X 轴的旋转
创建绕 Y 轴的旋转
创建绕 Z 轴的旋转
提取 X 欧拉角
提取 Y 欧拉角
提取 Z 欧拉角
下限
线性步进
最大值
最小值
混合
模数
Power
余数
旋转 (Rotate)
绕 X 轴旋转
绕 Y 轴旋转
绕 Z 轴旋转
四舍五入
平方根
步进
  常数
变量
属性绑定
预设件根绑定
别名绑定
属性字段绑定
颜色属性字段绑定
数据源绑定
网格布局 (Grid Layout) 绑定
变换绑定
  Srt2D
Srt3D

语法

#(备注)

在包含备注的每一行的开头使用一个井号。您可以在备注中以任何顺序使用字符。

#这是备注,所以可描述绑定表达式
#计算 A 的值
A = (2 + 4) / 3

()(小括号)

使用小括号进行分组以及包含表达式和参数,并控制执行顺序。

#包含表达式:计算两个值的模数
MOD(23, 27)
#将表达式分组:首先求 2 与 4 的和,然后用求和结果除以 3
# 并返回 2
A = (2 + 4) / 3
#首先将 FOV 属性添加到渲染变换 (Render Transformation) 缩放 X (Scale X) 属性字段,
#然后将乘积除以 2
({../Camera/Fov} + {../Box/RenderTransformation}.ScaleX) / 2

=(分配)

分配一个值给变量。

语法 var = value
参数
var 任何有效的变量名称
value 任何支持的变量值
示例

#将值 2.0 分配给变量 'A'
A = 2.0
#将值 4.0 分配给变量 'B'
B = 4.0

运算符

+(加)

将两个或更多的值相加,或者将多个字符串组合到一个字符串中。

语法 value1 + value2
参数
value1 color、int、float、string、Vector2、Vector3、Vector4 或 boolean:被加数
value2 color、int、float、string、Vector2、Vector3、Vector4 或 boolean:被加数
返回 与参数的类型相同,区别在于如果一个参数是浮点值,将返回浮点值。
示例

A = 2.0
B = 4.0

#返回 6.0
A + B

-(减)

从第一个参数的值中减去第二个参数的值。作为一种否定运算符,它会返回相当于将值乘以 -1 的结果。

语法 value1 - value2
参数
value1 color、int、float、string、Vector2、Vector3、Vector4 或 boolean:被减数
value2 color、int、float、string、Vector2、Vector3、Vector4 或 boolean:减数
返回 与参数的类型相同,区别在于如果一个参数是浮点值,将返回浮点值。
示例

A = 2.0
B = 4.0

#返回 -2.0
A - B

*(乘)

乘以参数的值。

语法 value1 * value2
参数
value1 color、int、float、Vector2、Vector3、Vector4 或 boolean:被乘数
value2 color、int、float、Vector2、Vector3、Vector4 或 boolean:乘数

请注意,两个参数只能有一个是布尔值。

返回

与参数的类型相同,区别在于:

  • 如果一个参数是浮点值,将返回浮点值
  • 如果一个参数是布尔值,将返回整数值,或者返回浮点值(如果至少一个参数是浮点值)
示例

A = 2.0
B = 4.0

#返回 8.0
A * B

/(除)

将第一个参数的值除以第二个参数的值。

语法 value1 / value2
参数
value1 color、int、float、Vector2、Vector3、Vector4 或 boolean:被除数
value2 color、int、float、Vector2、Vector3、Vector4 或 boolean:除数

请注意,两个参数只能有一个是布尔值。

返回

与参数的类型相同,区别在于:

  • 如果一个参数是浮点值,将返回浮点值
  • 如果一个参数是布尔值,将返回整数值,或者返回浮点值(如果至少一个参数是浮点值)
示例

A = 2.0
B = 4.0

# 返回 0.5
A / B

转换

整数和浮点数之间的转换为隐式,并取决于使用该值的属性类型。与字符串之间的转换为显式。

整数 (Integer)

将值转换为整数。整数和浮点数之间的转换为隐式,并取决于使用该值的属性类型。与字符串之间的转换为显式。

语法 INT(value)
参数
value float、boolean、string
返回 int
示例

#以显式方式将字符串 "5" 转换为整数,将其添加到整数 5 中,
#并将结果分配给变量 A。返回整数 10。
A = 5 + INT("5")
#以隐式方式将布尔值 True 转换为整数,将其添加到整数 5 中,
#并将结果分配给变量 A。返回整数 6。
B = 5 + True
#以显式方式将浮点值 5.5 转换为整数,将其添加到整数中,
#并将结果分配给变量 C。返回整数 7。
C = 2 + INT(5.5)

浮点 (Float)

将值转换为浮点值。整数和浮点数之间的转换为隐式,并取决于使用该值的属性类型。与字符串之间的转换为显式。

语法 FLOAT(value)
参数
value int、boolean、string
返回 float
示例

#将字符串 "5" 转换为浮点值,将其添加到整数 5 中,
# 并将结果分配给变量 A。返回浮点值 10.000000。
A = 5 + FLOAT("5")
#以隐式方式将布尔值 True 转换为浮点值,将其添加到浮点值 5.1 中,
#并将结果分配给变量 A。返回浮点值 6.1。
B = 5.1 + True

布尔类型 (Boolean)

将值转换为布尔值。整数和浮点数之间的转换为隐式,并取决于使用该值的属性类型。与字符串之间的转换为显式。

语法 BOOL(value)
参数
value int、float、string
返回 bool
示例

#将布尔值 "True" 转换为整数值 1,将其添加到整数 41 中,
#并将结果分配给变量 A。返回整数值 42。
A = 41 + BOOL("True")

字符串 (String)

将值转换为字符串。整数和浮点数之间的转换为隐式,并取决于使用该值的属性类型。与字符串之间的转换为显式。

语法 STRING(value)
参数
value int、float、boolean
返回 string
示例

#将整数值 5 转换为字符串,将其串联到字符串
# "Five is written as ",并将结果分配给变量 B。
# 返回字符串 "Five is written as "。
A = "Five is written as " + STRING(5)
#将变量 A 的值转换为字符串,将其串联到
#字符串 "Number of fingers on two hands is " 中,并将结果分配给
#变量 B。返回字符串 "Number of fingers on two hands is 10"。
A = 10
C = "Number of fingers on two hands is " + STRING(A)
#将浮点属性 Float 的值转换为四舍五入到
#一个小数位的字符串。要显示两个小数位,请将 10 替换为 100,
#要显示三个小数位,请将 10 替换为 1000,以此类推。
a = INT(FLOOR({@../Float}))
b = INT(10*({@../Float} - a))
STRING(a) + "."+ STRING(b)

函数

绝对值

计算数值或变量的绝对值。数值的绝对值始终是正值。

语法 ABS(value)
参数
value color、int、float、Vector2、Vector3、Vector4:要计算的数值
返回 与参数的类型相同
示例

#返回 5.2
ABS(-5.2)

动画化

将属性值绑定到您在动画数据 (Animation Data) 项中定义的分段函数。请参阅在绑定中使用分段函数

Animate 需要两个参数:要绑定动画数据 (Animation Data) 项到其中的属性,以及您在其中定义了用于设置边界属性值的分段函数的那个动画数据 (Animation Data) 项的资源 ID 或 kzb URL。

使用资源 ID 时,您必须将动画数据 (Animation Data) 项放在包含绑定的节点能访问的资源字典中。请参阅使用资源字典

例如,您可以使用 Animate 函数来设置仪表在值介于 0 到 100 之间时,移动速度快于值大于 100 时。

语法 Animate(property, "animationDataResource")
参数
property

要用于沿动画曲线而不是时间进行移动的属性的路径和名称

animationDataResource 要使用其动画曲线来设置边界属性值的那个动画数据 (Animation Data) 项的资源 ID 或 kzb URL
示例

# 使用Speed 属性沿资源 ID 为
# Speed curve动画数据 (Animation Data) 项的动画曲线移动。
Animate({@./Speed}, "Speed curve")
# 使用Speed 属性沿 kzb URL 为
# Speed curve动画数据 (Animation Data) 项的动画曲线移动。
Animate({@./Speed}, "kzb://cluster/动画数据 (Animation Data)/Speed curve")

上限

计算大于或等于参数值的最近整数值。

语法 CEIL(value)
参数
value color、int、float、Vector2、Vector3、Vector4:要计算的数值
返回 与参数的类型相同
示例

#返回 3.0
CEIL(2.06)
#返回 16.0
CEIL(15.92)
#返回 -2
CEIL(-2.06)

限制 (Clamp)

限制值,使其介于两个值之间。CLAMP 返回同 MIN(MAX(value, low), high) 相同的值。

语法 CLAMP(low, high, value)
参数
low int 或 float:用于限制值的范围的下限
high int 或 float:用于限制值的范围的上限
value int 或 float:要限制的值
返回 如果所有参数都是浮点值,则为浮点值,否则为整数值
示例

#返回 1
CLAMP(1, 4, 0.5)
#返回 4
CLAMP(-3, 8, 4)

创建旋转

使用四元数数据类型在布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性中创建旋转。四元数据类型用于旋转属性字段。请参阅创建绕 X 轴的旋转创建绕 Y 轴的旋转创建绕 Z 轴的旋转旋转 (Rotate)绕 X 轴旋转绕 Y 轴旋转绕 Z 轴旋转

语法 CreateRotation(x, y, z)
参数
x int 或 float:绕 X 轴的旋转度数
y int 或 float:绕 Y 轴的旋转度数
z int 或 float:绕 Z 轴的旋转度数
返回 quaternion
示例

#旋转边界节点:
# - 绕 X 轴旋转 10 度
# - 绕 Y 轴旋转 40 度
# - 绕 Z 轴旋转 50 度
CreateRotation(10, 40, 50)
#旋转边界节点:
# - 绕 X 轴旋转 30.5 度
# - 绕 Y 轴旋转 80 度
# - 绕 Z 轴旋转 46.5 度
CreateRotation(30.5, 80, 46.5)

创建绕 X 轴的旋转

使用四元数数据类型绕 X 轴在布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性中创建旋转。四元数据类型用于旋转属性字段。请参阅创建旋转创建绕 Y 轴的旋转创建绕 Z 轴的旋转旋转 (Rotate)绕 X 轴旋转绕 Y 轴旋转绕 Z 轴旋转

语法 CreateRotationX(x)
参数
x int 或 float:绕 X 轴的旋转度数
返回 quaternion
示例

#绕 X 轴将边界节点旋转 55 度。
CreateRotationX(55)

创建绕 Y 轴的旋转

使用四元数数据类型绕 Y 轴在布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性中创建旋转。四元数据类型仅用于旋转属性字段。请参阅 创建旋转创建绕 X 轴的旋转创建绕 Z 轴的旋转旋转 (Rotate)绕 X 轴旋转绕 Y 轴旋转绕 Z 轴旋转

语法 CreateRotationY(y)
参数
y int 或 float:绕 Y 轴的旋转度数
返回 quaternion
示例

#绕 Y 轴上将边界节点旋转 55 度。
CreateRotationY(55)
#绕 Y 轴上将边界节点旋转 16.5 度。
CreateRotationY(16.5)						

创建绕 Z 轴的旋转

使用四元数数据类型在 Z 轴上的布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性中创建旋转角度。四元数据类型仅用于旋转属性字段。请参阅创建旋转创建绕 X 轴的旋转创建绕 Y 轴的旋转旋转 (Rotate)绕 X 轴旋转绕 Y 轴旋转绕 Z 轴旋转

语法 CreateRotationZ(z)
参数
z int 或 float:绕 Z 轴的旋转度数
返回 quaternion
示例

#绕 Z 轴上将边界节点旋转 33 度。 
CreateRotationZ(33)
#绕 Z 轴上将边界节点旋转 5.5 度。
CreateRotationZ(5.5)

提取 X 欧拉角

布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性中提取 X 欧拉角。您可以使用 ExtractEulerX 旋转属性字段: ExtractEulerX 将四元数数据类型值视为参数并返回浮点数据。
当在 SRT3D 属性中设置角度时,角度将存储在四元数数据类型中。由于 ExtractEulerX 函数会从四元数中提取角度,因此返回的欧拉角将不同于最初在 SRT3D 属性中设置的角度。这两个角度都定义了同一个旋转角度。
请参阅提取 Y 欧拉角提取 Z 欧拉角创建旋转创建绕 X 轴的旋转创建绕 Y 轴的旋转旋转 (Rotate)绕 X 轴旋转绕 Y 轴旋转绕 Z 轴旋转

语法 ExtractEulerX(rotationField)
参数
rotationField 布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性的旋转属性字段
返回 float
示例

#从 布局变换 (Layout Transformation) 属性的旋转属性字段
#提取 X 欧拉角。
ExtractEulerX({@./Node3D.LayoutTransformation}.Rotation)
#从 布局变换 (Layout Transformation) 属性的旋转属性字段
#提取 X 欧拉角,并将该 X 欧拉角的值
#绑定到 旋转 Y (Rotation Y) 属性字段。
a = ExtractEulerX({@./Node3D.LayoutTransformation}.Rotation)
CreateRotation(0, a, 0)

提取 Y 欧拉角

布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性提取 Y 欧拉角。您可以使用 ExtractEulerY 旋转属性字段: ExtractEulerY 将四元数数据类型值视为参数并返回浮点数据。
当在 SRT3D 属性中设置角度时,角度将存储在四元数数据类型中。由于 ExtractEulerX 函数会从四元数中提取角度,因此返回的欧拉角将不同于最初在 SRT3D 属性中设置的角度。这两个角度都定义了同一个旋转角度。
请参阅提取 X 欧拉角提取 Z 欧拉角创建旋转创建绕 X 轴的旋转创建绕 Y 轴的旋转旋转 (Rotate)绕 X 轴旋转绕 Y 轴旋转绕 Z 轴旋转

语法 ExtractEulerY(rotationField)
参数
rotationField 布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性的旋转属性字段
返回 float
示例

#从 布局变换 (Layout Transformation) 属性的旋转属性字段
#提取 Y 欧拉角。
ExtractEulerY({@./Node3D.LayoutTransformation}.Rotation)

提取 Z 欧拉角

布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性提取 Z 欧拉角。您可以使用 ExtractEulerZ 旋转属性字段: ExtractEulerZ 将四元数数据类型值视为参数并返回浮点数据。
当在 SRT3D 属性中设置角度时,角度将存储在四元数数据类型中。由于 ExtractEulerX 函数会从四元数中提取角度,因此返回的欧拉角将不同于最初在 SRT3D 属性中设置的角度。这两个角度都定义了同一个旋转角度。
请参阅提取 X 欧拉角提取 Y 欧拉角创建旋转创建绕 X 轴的旋转创建绕 Y 轴的旋转旋转 (Rotate)绕 X 轴旋转绕 Y 轴旋转绕 Z 轴旋转

语法 ExtractEulerZ(rotationField)
参数
rotationField 布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性的旋转属性字段
返回 float
示例

#从 布局变换 (Layout Transformation) 属性的旋转属性字段
#提取 Z 欧拉角。
ExtractEulerZ({@./Node3D.LayoutTransformation}.Rotation)

下限

计算小于或等于参数值的最近整数值。

语法 FLOOR(value)
参数
value color、int、float、Vector2、Vector3、Vector4:要 compute 的数值
返回 与参数的类型相同
示例

#返回 0.0
FLOOR(0.8)
#返回 1.0
FLOOR(1.5)
#返回 15.0
FLOOR(15.92)

线性步进

在两个值之间执行线性插值。LINEARSTEP 返回同 CLAMP(0, 1, (value - low) / (high - low)) 相同的值。

语法 LINEARSTEP(low, high, value)
参数
low int 或 float:线性函数的下限
high int 或 float:线性函数的上限
value int 或 float:要限制的值
返回

如果其中一个参数是浮点值,则为浮点值,否则为整数值:

  • 0.0,如果 value 小于或等于 low
  • 1.0,如果 value 大于或等于 high
  • 否则 (value - low) / (high - low)
示例

#返回 0.0
LINEARSTEP(1, 4, 0.5)
#返回 0.64 (7/11)
LINEARSTEP(-3, 8, 4.0)

最大值

确定两个值中的较大者,并返回较大的值。

语法 MAX(value1, value2)
参数
value1 int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第一个数值
value2 int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第二个数值

请注意,两个参数只能有一个是布尔值。

返回 与参数的类型相同,如果一个参数是浮点值,则为浮点值,否则为整数值
示例

#返回 5
MAX(2, 5)
#返回 -2.1
MAX(-10, -2.1)

最小值

确定两个值中的较小者,并返回较小的值。

语法 MIN(value1, value2)
参数
value1 int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第一个数值
value2 int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第二个数值

请注意,两个参数只能有一个是布尔值。

返回 与参数的类型相同,如果一个参数是浮点值,则为浮点值,否则为整数值
示例

#返回 2
MIN(2, 5)
#返回 -10
MIN(-10, -2.1)

混合

通过用一个值在两个值之间进行加权,在两个值之间执行线性插值。Kanzi 会使用函数来计算结果: (end - start) * weight + start

语法 MIX(start, end, weight)
参数
start int 或 float:插值范围的起点
end int 或 float:插值范围的终点
weight int 或 float:用于插值的值介于 startend
返回 如果其中一个参数是浮点值,则为浮点值,否则为整数值
示例

#返回 2.5
MIX(1, 4, 0.5)
#返回 0.5
MIX(-1, -4, -0.5)

模数

计算模数,模数是使用模数同余函数将一个数值除以另一个数值之后的余数。

请参阅余数

语法 MOD(value1, value2)
参数
value1 int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第一个数值:被除数
value2 int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第一个数值:除数

请注意,两个参数只能有一个是布尔值。

返回 与参数的类型相同,如果一个参数是浮点值,则为浮点值,否则为整数值
示例

#返回 3
MOD(13, 5)
#返回 2
MOD(-13, 5)

Power

计算指数表达式。这是一种让数与数本身相乘的高效方法。

语法 POW(n, e)
参数
n int、float、color、Vector2、Vector3、Vector4:指数表达式的底数
e int、float 或 boolean:指数运算的指数
返回 与参数 n 的类型相同,区别在于对于整数值,将返回浮点值
示例

#等于 2*2*2*2*2 并返回 32
POW(2, 5)

余数

计算一个数值除以另一个向零四舍五入的数值后的余数。

请参阅 模数

语法 REM(value1, value2)
参数
value1 int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第一个数值:被除数
value2 int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第一个数值:除数

请注意,两个参数只能有一个是布尔值。

返回 与参数的类型相同,如果一个参数是浮点值,则为浮点值,否则为整数值
示例

#返回 3
REM(13, 5)
#返回 -3
REM(-13, 5)

旋转 (Rotate)

创建整个 SRT3D 旋转属性字段。您可以将 SRT3D 数据类型与布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性配合使用。请参阅绕 X 轴旋转绕 Y 轴旋转绕 Z 轴旋转创建旋转创建绕 X 轴的旋转创建绕 Y 轴的旋转创建绕 Z 轴的旋转

语法 Rotate(rotationField, value)
参数
rotationField 布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性的旋转属性字段
value Vector3
返回 quaternion
示例

#旋转边界节点:
# - 绕 X 轴逆时针旋转 40 度
# - 绕 Y 轴逆时针旋转 80 度
# - 绕 Z 轴逆时针旋转 60 度。
Rotate({./Node3D.LayoutTransformation}.Rotation, Vector3(40, 80, 60))	

绕 X 轴旋转

绕 X 轴创建整个 SRT3D 旋转属性字段。您可以将 SRT3D 数据类型与布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性配合使用。请参阅旋转 (Rotate)创建旋转创建绕 X 轴的旋转创建绕 Y 轴的旋转创建绕 Z 轴的旋转

语法 RotateX(rotationField, value)
参数
rotationField 布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性的旋转属性字段
value 整数值或浮点值
返回 quaternion
示例

# 绕 X 轴将边界节点逆时针旋转 20 度。
RotateX({./Node3D.LayoutTransformation}.Rotation, 20)

绕 Y 轴旋转

绕 Y 轴创建整个 SRT3D 旋转属性字段。您可以将 SRT3D 数据类型与布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性配合使用。请参阅旋转 (Rotate)创建旋转创建绕 X 轴的旋转创建绕 Y 轴的旋转创建绕 Z 轴的旋转

语法 RotateY(rotationField, value)
参数
rotationField 布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性的旋转属性字段
value 整数值或浮点值
返回 quaternion
示例

# 绕 Y 轴将边界节点逆时针旋转 20 度。
RotateY({./Node3D.LayoutTransformation}.Rotation, 20)

绕 Z 轴旋转

绕 Z 轴创建整个 SRT3D 旋转属性字段。您可以将 SRT3D 数据类型与布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性配合使用。请参阅旋转 (Rotate)创建旋转创建绕 X 轴的旋转创建绕 Y 轴的旋转创建绕 Z 轴的旋转

语法 RotateZ(rotationField, value)
参数
rotationField 布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性的旋转属性字段
value 整数值或浮点值
返回 quaternion
示例

#绕 Z 轴将边界节点逆时针旋转 20 度。
RotateZ({./Node3D.LayoutTransformation}.Rotation, 20)

四舍五入

计算最近的整数。

语法 ROUND(value)
参数
value color、int、float、Vector2、Vector3、Vector4:要计算的数值
返回 与参数的类型相同
示例

#返回 1.0
ROUND(0.8)
#返回 2.0
ROUND(1.5)
#返回 0.0
ROUND(0.1)

平方根

计算数值的平方根。数值的平方根始终是正值。

语法 SQRT(n)
参数
n int、float、color、Vector2、Vector3、Vector4:要计算的数值
返回 与参数的类型相同,区别在于对于整数值,将返回浮点值
示例

#返回 5.0
SQRT(25)

步进

将一个值与阈值进行比较。

语法 STEP(threshold, value)
参数
threshold int、float、color、Vector2、Vector3、Vector4:比较要用的阈值
value int、float、color、Vector2、Vector3、Vector4:要计算的数值:要与阈值进行比较的值
返回 浮点值,如果 value 小于 threshold,则为 0.0,如果 value 等于或大于值,则为 1.0 threshold
示例

#返回 1.0
STEP(2, 5)
#返回 0.0
STEP(0.0, -0.1)
#返回 1.0
STEP(1.0, 1.0)

通用绑定表达式

常数

要将属性值绑定到常数,请只输入常数。

#将所选属性的值绑定到 10。
10

变量

在绑定表达式中,您可以使用变量。

#将值 1 分配给变量 'A',并将变量
#的值绑定到所选的属性。
A = 1
#与上述描述相同,但使用另一种语法。
A = (1)

属性绑定

要将一个属性绑定到另一个属性,请在花括号中输入包含要绑定的属性的那个节点的相对路径,然后输入一个正斜杠和源属性的名称。

当在路径前面使用 @ 符号时,每当场景图中的源节点和目标节点之间的位置发生变化,Kanzi Studio 都会更新绑定表达式。请注意,使用 @ 符号时,您只能在同一个预设件内创建绑定,而不能在预设件之间创建绑定。

您可以将属性名称从属性 (Properties) 拖到绑定参数编辑器 (Binding Argument Editor) 中。

您可以对属性值和属性字段值使用运算符和小括号。

语法 {[path]/[property]}
参数
[path] 节点的相对路径
[property] 属性的名称
示例

#绑定到当前节点的布局宽度 (Layout Width) 属性。
{@./LayoutWidth}
#绑定到方框 摄像机 (Camera) 节点的 FOV 属性。
{@../Camera/Fov}
#与上述描述相同,但 Kanzi Studio 不跟踪目标节点的位置。
{../Camera/Fov}
#绑定到方框 方框 (Box) 节点的 垂直边距 (Vertical Margin) 属性。
{@../Box/LayoutVerticalMargin}
#将 FOV 属性乘以布局变换 (Layout Transformation) 缩放 X (Scale X) 属性字段。
{@../Camera/Fov} * {../Box/LayoutTransformation}.ScaleX
#将当前节点的  渲染变换 (Render Transformation) 平移 X (Translation X)平移 Y (Translation Y) 属性字段绑定到使用 Vector2D 数据类型的属性的每个矢量。#在 绑定参数编辑器 (Binding Argument Editor) 编辑器中,将 属性 (Property) 设置为使用 Vector2D 数据类型的属性。例如,使用水平边距 (Horizontal Margin) 属性。 X = {@./Node3D.RenderTransformation}.TranslationX Y = {@./Node3D.RenderTransformation}.TranslationY V = Vector2(0.0, 0.0) V.VectorX = X V.VectorY = Y V

预设件根绑定

预设件可以包含具有各自属性的节点树。编辑预设件中的节点或工程中的预设件实例时,就会更改该预设件所有实例中的这些节点。但您可以通过重写默认预设件中的值来自定义预设件的各个实例以获得各个值。例如,您为地址簿条目创建预设件时,每个地址簿条目要显示不同的名称、编号和照片。

要将某个预设件中任意节点的属性绑定到该预计件实例的根中,请在绑定表达中,在花括号中输入 ##Template,然后输入要绑定到的预设件实例的根中对应属性的名称。

例如,如果 按钮 (Button) 预设件中存在一个 文本块 (Text Block) 节点,而您希望在该预设件的不同实例中显示不同的文本,则可以使用 ##Template 绑定语法。

建议

您可以让 Kanzi Studio 创建一个预设件根绑定。当您选择预设件的任意节点并在 属性 (Properties) 中点击属性旁边的 时,Kanzi Studio 会:

  1. 从该属性创建一个自定义属性。
  2. 将该自定义属性添加到预设件,并在该预设件的每个实例中,将该自定义属性按照常用属性显示。
  3. 在节点中创建 ##Template 到预设件根中该自定义属性的绑定。

请参阅使用绑定到自定义预设件的实例

语法 {##Template/[property]}
参数
[property] 要绑定的预设件实例的根中,属性的名称
示例

#绑定到该预设件实例根中的 MyProject.ContactNameText 属性。
{##Template/MyProject.ContactNameText}

别名绑定

要将属性绑定到别名,在花括号中输入 # 符号,后跟别名名称、正斜杠以及别名所指向的项的属性名称。请参阅 使用别名

语法 {#[aliasName]/[property]}
参数
[aliasName] 别名的名称
[property] 属性的名称
示例

#绑定到别名为“Sphere”的目标节点的 布局宽度 (Layout Width) 属性。
{#Sphere/LayoutWidth}
#用别名为“MainCamera”的目标节点的 FOV 属性
#乘以 渲染变换 (Render Transformation) 属性 缩放 X (Scale X) 属性字段。
{#MainCamera/Fov} * {../Box/RenderTransformation}.ScaleX

属性字段绑定

要将属性绑定到属性的属性字段,请在花括号中输入到节点的对应路径,然后输入一个正斜杠、属性字段的周期和名称。对于并非通用的属性字段,不要使用属性文件名称,而应使用 VectorN,其中的 NXYZW,表示属性在 属性 (Properties) 中的列出顺序。您可以对属性值和属性字段值使用运算符和小括号。

当您希望将属性绑定到特性时,请使用以下名称。

描述 属性字段名称 备用属性字段名称
颜色 (Color) 属性红色通道值 ColorR Color_R, R
颜色 (Color) 属性绿色通道值 ColorG Color_G, G
颜色 (Color) 属性蓝色通道值 ColorB Color_B, B
颜色 (Color) 属性阿尔法通道值 ColorA Color_A, A
节点围绕您使用旋转函数设置的 X、Y 和 Z 轴旋转的角度值。请参阅创建旋转创建绕 X 轴的旋转创建绕 Y 轴的旋转创建绕 Z 轴的旋转旋转 (Rotate)绕 X 轴旋转绕 Y 轴旋转绕 Z 轴旋转 旋转 旋转
节点围绕 Z 轴旋转的角度值 RotationZ Rotation_Z
节点沿 X 轴缩放的比例值 ScaleX Scale_X
节点沿 Y 轴缩放的比例值 ScaleY Scale_Y
节点沿 Z 轴缩放的比例值 ScaleZ Scale_Z
节点在 X 轴上的位置值 TranslationX Translation_X, X
节点在 Y 轴上的位置值 TranslationY Translation_Y, Y
节点在 Z 轴上的位置值 TranslationZ Translation_Z, Z
属性的第一个属性字段 VectorX Vector_X
属性的第二个属性字段 VectorY Vector_Y
属性的第三个属性字段 VectorZ Vector_Z
属性的第四个属性字段 VectorW Vector_W

 

语法 {[path]/[property]}.[field]
参数
[path] 节点的相对路径
[property] 属性的名称
[field] 属性字段的名称
示例

#绑定到 方框 (Box) 节点 布局变换 (Layout Transformation) 属性的
#属性字段 缩放 X (Scale X)缩放 X (Scale X) 属性字段的值)。
{../Box/LayoutTransformation}.ScaleX

#绑定到 点光源 (Point Light) 节点 点光源颜色 (Point Light Color) 属性的
#属性字段 颜色 R (Color R)(红色通道的值)。
{../Point Light/PointLightColor}.ColorR

#光源节点具有一个衰减属性,该属性具有三个属性字段,分别是:
#常数 (Constant)线性 (Linear)二次 (Quadratic)。
#例如,对于点光源 (Point Light):
#要绑定到第一个属性字段 (常数 (Constant))
{../Light/PointLightAttenuation}.VectorX

#要绑定到第二个属性字段 (线性 (Linear))
{../Light/PointLightAttenuation}.VectorY

#要绑定到第三个属性字段 (二次 (Quadratic))
{../Light/PointLightAttenuation}.VectorZ

#用属性 FOV 乘以 渲染变换 (Render Transformation) 属性 缩放 X (Scale X) 属性字段。
{../Camera/Fov} * {../Box/RenderTransformation}.ScaleX
#绑定到 图像 (Image) 节点 下对齐 (Bottom) 属性字段的 垂直边距 (Vertical Margin) 属性。
{@../Image/Node.VerticalMargin}.VectorX
#绑定到 图像 (Image) 节点 上对齐 (Top) 属性字段的 垂直边距 (Vertical Margin) 属性。
{@../Image/Node.VerticalMargin}.VectorY
#将当前节点的  渲染变换 (Render Transformation) 平移 X (Translation X)平移 Y (Translation Y) 属性字段绑定到使用 Vector2D 数据类型的属性的每个矢量。#在 绑定参数编辑器 (Binding Argument Editor) 编辑器中,将 属性 (Property) 设置为使用 Vector2D 数据类型的属性。例如,使用水平边距 (Horizontal Margin) 属性。 X = {@./Node3D.RenderTransformation}.TranslationX Y = {@./Node3D.RenderTransformation}.TranslationY V = Vector2(0.0, 0.0) V.VectorX = X V.VectorY = Y V

颜色属性字段绑定

Color4()绑定颜色属性字段。Color4() 取四个参数:

颜色值映射到范围 0 到 1。

语法 Color4(r, g, b, a)
参数
r

0...1 范围:红色通道值

g

0...1 范围:绿色通道值

b

0...1 范围:蓝色通道值

a

0...1 范围:阿尔法通道值

示例

# 将颜色设置为白色和不透明。
Color4(1, 1, 1, 1)

#与上述描述相同,但使用另一种语法。
Color(1, 1, 1, 1)

#将颜色设置为透明度为 50% 的红色。
Color4(1, 0, 0, 0.5)

#表达式无效,缺少一个参数。
Color4(0.1, 1, 0.4)

#使用变量作为 Color4() 的属性字段,以分配
#整个 颜色 (Color) 属性的属性字段值。
#
#将自定义属性红色、绿色和蓝色分配给
#用于控制节点颜色的变量。
red = {@./Red}
green = {@./Green}
blue = {@./Blue}
color = Color4(0, 0, 0, 1)
#将红色、绿色和蓝色变量分配给每个颜色通道。
color.ColorR = red
color.ColorG = green
color.ColorB = blue
color

数据源绑定

要将数据对象绑定到属性或属性字段,请在花括号中输入 DataContext,然后输入一个句点和要将属性字段的属性绑定到其中的数据对象。使用句点可以访问子数据对象。

语法 {DataContext.DataObject}
参数
DataObject 要绑定到其中的数据对象。
示例

#将项的属性值绑定到speed 数据对象
#在项的数据上下文中,数据对象是仪表数据对象的
#一个子数据对象。
{DataContext.gauges.speed}
#绑定数据上下文本身。例如,如果希望将当前的数据上下文
#用作属性值。
{DataContext}

网格布局 (Grid Layout) 绑定

要使用绑定功能设置网格布局 (Grid Layout) 节点中的列和行的大小,请在引号中输入每个值,然后输入一个分号:

语法 "value0;value1; ... valueN;"
参数
value float
示例

#绑定到列 (Columns) 属性会将这三个列的宽度都设置为固定大小:
# - 第一列的宽度为 2.0。
# - 第二列的宽度为 3.0。
# - 第三列的宽度为 4.0。
"2.0;3.0;4.0;"
#绑定到行 (Rows) 属性会将这三个行的高度都设置为固定大小 5.0。
"5.0;5.0;5.0;"
#绑定到行 (Rows) 属性会将两个行的高度设置为其内容的高度。
";;"
#绑定到列 (Columns) 属性会相对于网格布局 (Grid Layout) 节点的总宽度设置列的宽度:
# - 第一列的宽度为网格布局 (Grid Layout) 节点宽度的 1/6。
# - 第二列的宽度为网格布局 (Grid Layout) 节点宽度的 2/6。
# - 第三列的宽度为网格布局 (Grid Layout) 节点宽度的 3/6。
"*1.0;*2.0;*3.0;"

变换绑定

使用 Srt2D()Srt3D() 常数变换边界节点的缩放、旋转和变换。

Srt2D

使用 Srt2D() 应用变换到具有渲染变换 (Render Transformation)布局变换 (Layout Transformation) 属性的 2D 节点。在绑定参数编辑器 (Binding Argument Editor) 中,将属性 (Property) 设置为布局变换 (Layout Transformation)渲染变换 (Render Transformation)

语法 Srt2D(scaleX, scaleY, rotation, translationX, translationY)
参数
scaleX int、float:x 轴上节点的缩放(单位:百分比)
scaleY int、float:y 轴上节点的缩放(单位:百分比)
rotation int、float:节点旋转度数
translationX int、float:x 轴上节点的变换(单位:像素)
translationY int、float:y 轴上节点的变换(单位:像素)
返回 Transformation2D,边界 2D 节点的缩放、旋转和变换的计算变换
示例

# 使用布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性应用变换到边界 2D 节点,
# 取决于您在绑定参数编辑器 (Binding Argument Editor) 中设置的属性。
# - 在两个轴上将节点扩展至 150%
# - 顺时针旋转节点 90 度
# - 在 x 轴上变换该节点 800 像素,在 y 轴上变换该节点 60.5 像素。
Srt2D(1.5, 1.5, 90.0, 800.0, 60.5)

Srt3D

使用 Srt3D() 应用变换到具有渲染变换 (Render Transformation)布局变换 (Layout Transformation) 属性的 3D 节点。在绑定参数编辑器 (Binding Argument Editor) 中,将属性 (Property) 设置为布局变换 (Layout Transformation)渲染变换 (Render Transformation)

语法 Srt3D(scaleX, scaleY, scaleZ, rotationX, rotationY, rotationZ, translationX, translationY, translationZ)
参数
scaleX int、float:x 轴上节点的缩放(单位:百分比)
scaleY int、float:y 轴上节点的缩放(单位:百分比)
scaleZ int、float:z 轴上节点的缩放(单位:百分比)
rotationX int、float:x 轴上节点的旋转(单位:百分比)
rotationY int、float:y 轴上节点的旋转(单位:百分比)
rotationZ int、float:z 轴上节点的旋转(单位:百分比)
translationX int、float:x 轴上节点的变换(单位:设备独立单位)
translationY int、float:y 轴上节点的变换(单位:设备独立单位)
translationZ int、float:z 轴上节点的变换(单位:设备独立单位)
返回 Transformation3D,边界 3D 节点的缩放、旋转和变换的计算变换
示例

# 使用布局变换 (Layout Transformation)渲染变换 (Render Transformation) 属性应用变换到边界 3D 节点,
# 取决于您在绑定参数编辑器 (Binding Argument Editor) 中设置的属性。
# - 在所有轴上缩放节点至 70%
# - x 轴上逆时针旋转节点 30 度,y 轴 60 度,z 轴 30 度
# - 在所有轴上按 1 个设备独立单位变换节点
Srt3D(0.7, 0.7, 0.7, -30.0, -60.0, -30.0, 1.0, 1.0, 1.0)

另请参阅

使用绑定

使用别名

排除绑定问题